package org.blogsite.greencode.struts2.interceptor;

import java.util.Map;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;

/**
 * @author：wzj
 * E-mail: jsun789@gmail.com
 * @date：2010-8-2 下午04:33:33
 */
public class LoginInterceptor extends AbstractInterceptor {

	@Override
	public String intercept(ActionInvocation invocation) throws Exception {
		// TODO Auto-generated method stub
		// 取得请求的Action名
        String actionName = invocation.getInvocationContext().getName();

        if (actionName.equals("loginUser")) {
            // 如果用户想登录，则使之通过
            return invocation.invoke(); 
        } else {
            // 取得Session。
            ActionContext ac = invocation.getInvocationContext();
            Map session =    (Map)ac.get(ServletActionContext.SESSION);
 
            if (session == null) {
                // 如果Session为空，则让用户登陆。
            	System.out.println("no session");
                return "loginUser";
            } else {
                String username = (String)session.get("SESSION_USERNAME");
                if (username == null) {
                	System.out.println("username null");
                    /*Session不为空，但Session中没有用户信息，
                     * 则让用户登陆
                	 */
                    return "loginUser";
                } /*当为讲师时,权限控制*/
                else if("instructor".equals((String)session.get("SESSION_USERTYPE"))){
//                	System.out.println(actionName);
                	actionName=actionName+"_instructor";
//                	System.out.println("进入权限控制"+actionName);
                	return actionName;
                }
                else {
                    // 用户已经登陆
                    return invocation.invoke(); 
                }
            }
        }
	}

}
